﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Logic.ControlExeption;

namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmSeguimientoImportacionDetalleActualizar : Page
    {
        private List<IMPORTACION_DET> listaCargaManual = null;
        private IEnumerable<Object> lista = null;
        private String idNegocio = ConfigurationManager.AppSettings["Negocio"];
        //private String strCMTipo;
        private String strMsg, strTitulo;
        private IMPORTACION_DET objIMPDET;

        protected void Page_Load(object sender, EventArgs e)
        {
              if (!IsPostBack)
                {
                    Panel img = (Panel)Master.FindControl("asp");
                    img.Visible = false;
                    Panel img2 = (Panel)Master.FindControl("pnlTop");
                    img2.Visible = false;

                    if (Session["CMTipo"] == null) Redireccionar();

                    CargaSector();
                    CargaColor();

                    lblCMDesOrg.Text = (Session["DES_ORG_VTA"] != null) ? Session["DES_ORG_VTA"].ToString() : String.Empty;
                    txtCMNumPedido.Text = (Session["NUM_PEDIDO"] != null) ? Session["NUM_PEDIDO"].ToString() : String.Empty;

                    if (Session["CMTipo"] != null && Session["CMTipo"].ToString() == "2")
                    {

                        CargaManualObtenerDatos();
                    }

                }
            
        }

        protected void GuardarCM(object sender, EventArgs e)
        {
            GrabarCM();
        }

        protected void CancelarCM(object sender, EventArgs e)
        {
            SalirCM("1");
        }

        private void CargaManualObtenerDatos()
        {
            try
            {
                if (Session["intIndex"] == null)
                {
                    strMsg = "No Hay Registro Seleccionado del Detalle.";
                    MostrarComentario(strMsg);
                    return;
                }

                int intIndex = Convert.ToInt32(Session["intIndex"]);
                listaCargaManual = (Session["listaCargaManual"] != null) ? (List<IMPORTACION_DET>)Session["listaCargaManual"] : new List<IMPORTACION_DET>();

                int? intidMaterial = null, intidColor = null, intidOrg = null;
                Decimal? deccantidad = null, decFob = null, decTotalFobMe = null;
                String strcodMaterial, strdesMaterial, strcodTipoPedido, strnumPedido, strdesColor, strCaja;

                intidMaterial = listaCargaManual[intIndex].ID_MATERIAL;
                intidColor = listaCargaManual[intIndex].ID_COLOR;
                intidOrg = listaCargaManual[intIndex].ID_ORG_VTA;

                deccantidad = listaCargaManual[intIndex].CANT_IMP;
                decFob = listaCargaManual[intIndex].FOB_ME;
                decTotalFobMe = listaCargaManual[intIndex].TOTAL_FOB_ME;

                strcodMaterial = listaCargaManual[intIndex].COD_MATERIAL;
                strdesMaterial = listaCargaManual[intIndex].DES_MATERIAL;
                strnumPedido = listaCargaManual[intIndex].NUM_PEDIDO;
                strdesColor = listaCargaManual[intIndex].DES_COLOR;
                strCaja = listaCargaManual[intIndex].CAJA;
                strcodTipoPedido = listaCargaManual[intIndex].COD_TIPO_PEDIDO;

                txtCMIdMaterial.Text = intidMaterial.ToString();
                cboCMColor.Value = intidColor.ToString();

                txtCMCantidad.Text = deccantidad.ToString();
                txtCMFob.Text = decFob.ToString();
                txtCMTotalFob.Text = decTotalFobMe.ToString();

                txtCMCodMaterial.Text = strcodMaterial;
                txtCMDesMaterial.Text = strdesMaterial;
                txtCMNumPedido.Text = strnumPedido;
                txtCMCaja.Text = strCaja;
                txtCMIdPedido.Text = strcodTipoPedido;

                txtCMCodMaterial.Enabled = false;
                txtCMDesMaterial.Enabled = false;
            }
            catch (Exception e)
            {
                GuardarExceptionLog(e.Message, e, "CargaManualObtenerDatos");
                MensajesError(e.Message, e, "CargaManualObtenerDatos");
            }
        }


        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (Crosland.Automotriz.Logic.ControlExeption.DataException e)
            {

                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }

        }


        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }
        private void recuperarDatos()
        {
            try
            {
                int? intvacio = null;
                Double? dblvacio = null;

                int? intidMaterial = null, intidColor = null, intidOrg = null;
                Double? deccantidad = null, decFob = null, decTotalFobMe = null;
                String strcodMaterial, strdesMaterial, strcodTipoPedido, strnumPedido, strdesColor, strCaja, strIdTipoPedido;

                intidMaterial = (Session["intidMaterial"] != null) ? Convert.ToInt32(Session["intidMaterial"]) : intvacio;
                intidColor = (Session["intidColor"] != null) ? Convert.ToInt32(Session["intidColor"]) : intvacio;
                intidOrg = (Session["intidOrg"] != null) ? Convert.ToInt32(Session["intidOrg"]) : intvacio;

                deccantidad = (Session["deccantidad"] != null) ? Convert.ToDouble(Session["deccantidad"]) : dblvacio;
                decFob = (Session["decFob"] != null) ? Convert.ToDouble(Session["decFob"]) : dblvacio;
                decTotalFobMe = (Session["decTotalFobMe"] != null) ? Convert.ToDouble(Session["decTotalFobMe"]) : dblvacio;

                strcodMaterial = (Session["strcodMaterial"] != null) ? Session["strcodMaterial"].ToString() : String.Empty;
                strdesMaterial = (Session["strdesMaterial"] != null) ? Session["strdesMaterial"].ToString() : String.Empty;
                strnumPedido = (Session["strnumPedido"] != null) ? Session["strnumPedido"].ToString() : String.Empty;
                strdesColor = (Session["strdesColor"] != null) ? Session["strdesColor"].ToString() : String.Empty;
                strCaja = (Session["strCaja"] != null) ? Session["strCaja"].ToString() : String.Empty;
                strcodTipoPedido = (Session["strcodTipoPedido"] != null) ? Session["strcodTipoPedido"].ToString() : String.Empty;
                strIdTipoPedido = (Session["strIdTipoPedido"] != null) ? Session["strIdTipoPedido"].ToString() : String.Empty;

                txtCMIdMaterial.Text = intidMaterial.ToString();
                cboCMColor.Value = intidColor.ToString();

                txtCMCantidad.Text = deccantidad.ToString();
                txtCMFob.Text = decFob.ToString();
                txtCMTotalFob.Text = string.Format("{0:0.##}", decTotalFobMe);
                txtCMCodMaterial.Text = strcodMaterial;
                txtCMDesMaterial.Text = strdesMaterial;
                txtCMNumPedido.Text = strnumPedido;
                txtCMCaja.Text = strCaja;
                txtCMIdPedido.Text = strIdTipoPedido;

                txtCMCodMaterial.Enabled = false;
                txtCMDesMaterial.Enabled = false;
            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "recuperarDatos");
                MensajesError(ex.Message, ex, "recuperarDatos");
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "recuperarDatos");
                MensajesError(e.Message, e, "recuperarDatos");
            }
        }

        private void Redireccionar()
        {
            Response.Redirect("~/Repuestos/wFrmSeguimientoImportacionGenerar.aspx?id=" + idNegocio, false);
            return;
        }

        private void CargaColor()
        {
            try
            {
                List<TD_COLOR> listaColor = new List<TD_COLOR>();
                listaColor = new clsTD_ColorLogic().listar();

                if (listaColor == null || listaColor.Count() == 0)
                {
                    strMsg = "No Hay Colores Disponibles.";
                    MostrarComentario(strMsg);
                    return;
                }

                cboCMColor.DataSource = listaColor;
                cboCMColor.TextField = "DES_COLOR";
                cboCMColor.ValueField = "ID_COLOR";
                cboCMColor.DataBind();

                int? intIdOrg = null;
                intIdOrg = (Session["ID_ORG_VTA"] != null) ? Convert.ToInt32(Session["ID_ORG_VTA"]) : intIdOrg;
                if (intIdOrg != null && intIdOrg == 2)
                {
                    cboCMColor.Value = "1";
                    cboCMColor.Enabled = false;
                }
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "CargaColor");
                MensajesError(e.Message, e, "CargaColor");
            }
        }

        private void GrabarCM()
        {
            if (!ValidarCampos()) return;
            if (!GrabarCMLista()) return;
            if (Session["CMTipo"].ToString() == "2") SalirCM("1");
        }

        private Boolean ValidarCampos()
        {
            Boolean boolValidarCampos = true;
            try
            {
                Double cant, fob;
                if (lblCMDesOrg.Text.Trim() == String.Empty)
                {
                    strMsg = "Debe Seleccionar Una Organizacion.";
                    boolValidarCampos = false;
                }
                else if (txtCMCodMaterial.Text.Trim() == String.Empty)
                {
                    strMsg = "El Codigo del Material No Debe Estar Vacio.";
                    boolValidarCampos = false;
                }
                else if (txtCMDesMaterial.Text.Trim() == String.Empty)
                {
                    strMsg = "La Descripcion del Material No Debe Estar Vacia";
                    boolValidarCampos = false;
                }
                else if (cboCMColor.Value == null)
                {
                    strMsg = "Debe Seleccionar un Color.";
                    boolValidarCampos = false;
                }
                else if (txtCMCantidad.Text.Trim() != String.Empty && !Double.TryParse(txtCMCantidad.Text.Trim(), out cant))
                {
                    strMsg = "La Cantidad Debe Ser Numerica.";
                    boolValidarCampos = false;
                }
                else if (txtCMFob.Text.Trim() != String.Empty && !Double.TryParse(txtCMFob.Text.Trim(), out fob))
                {
                    strMsg = "El Fob Debe Ser Numerico.";
                    boolValidarCampos = false;
                }
                else if (txtCMCantidad.Text.Trim() == String.Empty)
                {
                    strMsg = "Debe Ingresar Una Cantidad.";
                    boolValidarCampos = false;
                }
                else if (txtCMFob.Text.Trim() == String.Empty)
                {
                    strMsg = "Debe Ingresar Un Fob.";
                    boolValidarCampos = false;
                }

            }
            catch (Exception e)
            {
                GuardarExceptionLog("Error al Validar los Datos", e, "ValidarCampos");
                MensajesError("Error al Validar los Datos", e, "ValidarCampos");
            }

            if (!boolValidarCampos)
            {
                strTitulo = "ERROR AL VALIDAR LOS DATOS";
                MostrarComentario(strMsg, strTitulo);
            }

            return boolValidarCampos;

        }

        private Boolean GrabarCMLista()
        {
            Boolean boolGrabarCMLista = true;
            try
            {
                int? intidMaterial = null, intidColor = null, intidOrg = null, intNumItemPed = null;
                Decimal? deccantidad = null, decFob = null, decTotalFobMe = null;
                String strcodMaterial, strdesMaterial, strcodTipoPedido, strnumPedido, strdesColor, strCaja;

                intidMaterial = (txtCMIdMaterial.Text.Trim() != String.Empty) ? Convert.ToInt32(txtCMIdMaterial.Text.Trim()) : intidMaterial;
                intidColor = (cboCMColor.SelectedItem.Value != null) ? Convert.ToInt32(cboCMColor.SelectedItem.Value) : Convert.ToInt32(cboCMColor.Value);
                intidOrg = (Session["ID_ORG_VTA"] != null) ? Convert.ToInt32(Session["ID_ORG_VTA"]) : intidOrg;

                deccantidad = (txtCMCantidad.Text.Trim() != String.Empty) ? Convert.ToDecimal(txtCMCantidad.Text.Trim()) : deccantidad;
                decFob = (txtCMFob.Text.Trim() != String.Empty) ? Convert.ToDecimal(txtCMFob.Text.Trim()) : decFob;
                decTotalFobMe = deccantidad * decFob;

                strcodMaterial = txtCMCodMaterial.Text.Trim();
                strdesMaterial = txtCMDesMaterial.Text.Trim();
                strnumPedido = (Session["NUM_PEDIDO"] != null) ? Session["NUM_PEDIDO"].ToString() : String.Empty;
                strdesColor = cboCMColor.SelectedItem.Text ?? cboCMColor.Text;
                strCaja = txtCMCaja.Text.Trim();
                strcodTipoPedido = (Session["TIPO_PEDIDO_VALUE"] != null) ? Session["TIPO_PEDIDO_VALUE"].ToString() : String.Empty;
                objIMPDET = new IMPORTACION_DET();

                String strTipo = Session["CMTipo"].ToString();

                objIMPDET.ID_MATERIAL = intidMaterial;
                objIMPDET.ID_COLOR = intidColor;
                objIMPDET.ID_ORG_VTA = intidOrg;
                objIMPDET.CANT_IMP = deccantidad;
                objIMPDET.FOB_ME = decFob;
                objIMPDET.TOTAL_FOB_ME = decTotalFobMe;
                objIMPDET.COD_MATERIAL = strcodMaterial;
                objIMPDET.DES_MATERIAL = strdesMaterial;
                objIMPDET.NUM_PEDIDO = strnumPedido;
                objIMPDET.DES_COLOR = strdesColor;
                objIMPDET.CAJA = strCaja;
                objIMPDET.COD_TIPO_PEDIDO = strcodTipoPedido;


                listaCargaManual = (Session["listaCargaManual"] != null) ? (List<IMPORTACION_DET>)Session["listaCargaManual"] : new List<IMPORTACION_DET>();

                if (strTipo == "1")
                {
                    intNumItemPed = ObtenerMaxItem();
                    objIMPDET.NUM_ITEM_PED = intNumItemPed + 1;
                    listaCargaManual.Add(objIMPDET);
                    NuevoCM();
                    lblresul.Text = String.Format("{0} -- Agregado Correctamente.", strcodMaterial);
                }
                else if (strTipo == "2")
                {
                    intNumItemPed = Convert.ToInt32(Session["intNumItemPed"]);
                    objIMPDET.NUM_ITEM_PED = intNumItemPed;
                    int intIndex = (Session["intIndex"] != null) ? Convert.ToInt32(Session["intIndex"]) : -1;
                    if (intIndex == -1) return false;
                    listaCargaManual[intIndex] = objIMPDET;
                    Session["intIndex"] = null;
                }

                Session["listaCargaManual"] = listaCargaManual;
                Session["strAgregado"] = "1";
                boolGrabarCMLista = true;
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error al Grabar  Lista", ex, "GrabarCMLista");
                MensajesError("Error al Grabar  Lista", ex, "GrabarCMLista");
            }

            return boolGrabarCMLista;
        }

        protected void AgregarMaterial(object sender, EventArgs e)
        {
            MaterialAgregar();
        }

        private void MaterialAgregar()
        {
            try
            {
                int intIndex = grdMaterial.FocusedRowIndex;
                if (intIndex == -1)
                {
                    strMsg = "Debe Seleccionar Un Material.";
                    MostrarComentario(strMsg);
                    return;
                }

                pcMaterial.ShowOnPageLoad = false;

                int? intIdMaterial = null;
                String strCodMaterial, strDesMaterial, strFob;

                intIdMaterial = Convert.ToInt32(grdMaterial.GetRowValues(intIndex, "ID_MATERIAL"));
                strCodMaterial = grdMaterial.GetRowValues(intIndex, "COD_MATERIAL").ToString();
                strDesMaterial = grdMaterial.GetRowValues(intIndex, "DES_MATERIAL").ToString();
                strFob = grdMaterial.GetRowValues(intIndex, "FOB").ToString();

                txtCMIdMaterial.Text = intIdMaterial.ToString();
                txtCMCodMaterial.Text = strCodMaterial;
                txtCMDesMaterial.Text = strDesMaterial;
                txtCMFob.Text = String.Format("{0:f}", Convert.ToDecimal(strFob));

                txtCMCodMaterial.Enabled = false;
                txtCMDesMaterial.Enabled = false;
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error al agregar material", ex, "MaterialAgregar");
                MensajesError("Error al agregar materia", ex, "MaterialAgregar");
            }
        }

        private int? ObtenerMaxItem()
        {
            int? intNumItemPed = 0;
            try
            {
                if (Session["listaCargaManual"] != null) listaCargaManual = (List<IMPORTACION_DET>)Session["listaCargaManual"];

                var q = from t in
                            (from t in listaCargaManual
                             select new
                             {
                                 t.NUM_ITEM_PED,
                                 Dummy = "x"
                             })
                        group t by new { t.Dummy } into g
                        select new
                        {
                            NUM_ITEM_PED = g.Max(p => p.NUM_ITEM_PED) == null ? 0 : g.Max(p => p.NUM_ITEM_PED)
                        };
                if (q.ToList().Count() == 0)
                {
                    intNumItemPed = 0;
                }
                else
                {
                    intNumItemPed = q.ToList()[0].NUM_ITEM_PED;
                }
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error al obtener el máximo item", ex, "ObtenerMaxItem");
                MensajesError("Error al obtener el máximo item", ex, "ObtenerMaxItem");
                intNumItemPed = 0;
            }
            return intNumItemPed;
        }

        protected void btnMBuscar_Click(object sender, EventArgs e)
        {
            MaterialBuscar();
        }

        private void MaterialBuscar()
        {
            try
            {
                int? intIdSector = null, intcantLimite = null;
                String strCodMaterial, strDesMaterial;
                strCodMaterial = txtMCodigo.Text.Trim();
                strDesMaterial = txtMDescrip.Text.Trim();

                intIdSector = (cboSector.Value != null) ? Convert.ToInt32(cboSector.Value) : (cboSector.SelectedItem.Value != null) ? Convert.ToInt32(cboSector.SelectedItem.Value) : intIdSector;
                intcantLimite = (cboMatLimite.Value != null) ? Convert.ToInt32(cboMatLimite.Value) : Convert.ToInt32(cboMatLimite.SelectedItem.Value);


                if (strCodMaterial == String.Empty && strDesMaterial == String.Empty)
                {
                    strMsg = "Debe Seleccionar Un Codigo o Una Descripcion.";
                    MostrarComentario(strMsg, strTitulo);
                    return;
                }

                MaterialBuscar(strCodMaterial, strDesMaterial, intIdSector, intcantLimite);
            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "MaterialBuscar");
                MensajesError(ex.Message, ex, "MaterialBuscar");
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "MaterialBuscar");
                MensajesError(e.Message, e, "MaterialBuscar");
            }
        }

        private void MaterialBuscar(String strCodMaterial, String strDesMaterial, int? intIdSector, int? intcantLimite)
        {
            try
            {
                lista = new List<Object>();
                lista = new clsTD_MaterialLogic().ListarMaterial(strCodMaterial, strDesMaterial, intIdSector, intcantLimite);
                MaterialListado();
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "MaterialBuscar");
                MensajesError(e.Message, e, "MaterialBuscar");
            }
        }

        private void MaterialListado()
        {

            if (lista == null) return;

            grdMaterial.DataSource = lista;
            grdMaterial.DataBind();

            if (grdMaterial.VisibleRowCount == 0)
            {
                strMsg = "No Hay Datos Para La Consulta Realizada.";
                MostrarComentario(strMsg);
                return;
            }

        }

        protected void MaterialAgregar(object sender, EventArgs e)
        {
            NuevoCM();
        }

        private void NuevoCM()
        {
            try
            {
                String strvacio = String.Empty;
                txtCMCodMaterial.Text = strvacio;
                txtCMDesMaterial.Text = strvacio;
                cboCMColor.Value = strvacio;
                txtCMCaja.Text = strvacio;
                txtCMCantidad.Text = strvacio;
                txtCMFob.Text = strvacio;
                txtCMTotalFob.Text = strvacio;
                txtCMIdMaterial.Text = strvacio;
                txtCMIdPedido.Text = strvacio;
                txtCMNumPedido.Text = strvacio;
                txtCMCodMaterial.Enabled = true;
                txtCMDesMaterial.Enabled = true;
                CargaColor();
                pcAgregar.ShowOnPageLoad = false;
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL LIMPIAR LOS CONTROLES";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void Salir(object sender, EventArgs e)
        {
            SalirCM("1");
        }

        private void SalirCM(String tipo)
        {
            if (tipo == "1")
            {
                if (Session["strAgregado"] != null && Session["strAgregado"].ToString() == "1")
                {
                    Session["strMsg"] = (Session["CMTipo"].ToString() == "1") ? "Detalle Añadido Correctamente." : "Detalle Actualizado Correctamente.";
                }
                //Redireccionar();
                //return;
            }

            else if (tipo == "2")
            {
                Session["CMTipo"] = null;
                if (Session["strAgregado"] != null && Session["strAgregado"].ToString() != "1") Session["TIPO_PEDIDO_VALUE"] = null;
                //return;
            }


            Response.Redirect("~/Repuestos/wFrmSeguimientoImportacionGenerar.aspx?id=" + idNegocio);
        }

        protected void grdMaterial_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            MaterialBuscar();
        }

        protected void grdMaterial_PageIndexChanged(object sender, EventArgs e)
        {
            MaterialBuscar();
        }

        private void CargaSector()
        {
            try
            {
                lista = new List<Object>();
                lista = new clsTD_SectorLogic().lista();
                cboSector.DataSource = lista;
                cboSector.TextField = "DES_SECTOR";
                cboSector.ValueField = "ID_SECTOR";
                cboSector.DataBind();
                cboSector.Items.Add("Todos", null);
                cboSector.Value = 2.ToString();
            }
            catch (RunException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "CargaSector");
                MensajesError(ex.Message, ex, "CargaSector");
            }
        }

        private void MostrarComentario(String strMsg)
        {
            CargarAlert(strMsg, "Mensaje");
        }

        private void MostrarComentario(String strMsg, String strTitulo)
        {
            CargarAlert(strMsg, strTitulo);
        }

        private void CargarAlert(String strMsg, String strTitulo)
        {
            pcMensaje.HeaderText = strTitulo;
            lblmsj.Text = strMsg;
            pcMensaje.ShowOnPageLoad = true;
        }

        protected void BuscarMaterialCM(object sender, EventArgs e)
        {
            BuscarMaterialCM();
        }

        private void BuscarMaterialCM()
        {
            try
            {
                String strCodMaterial = txtCMCodMaterial.Text.Trim();

                if (strCodMaterial == String.Empty) return;

                lista = new List<Object>();
                lista = new clsTD_MaterialLogic().ListarMaterial(strCodMaterial);

                if (lista == null) return;

                grdMaterial.DataSource = lista;
                grdMaterial.DataBind();

                if (grdMaterial.VisibleRowCount == 0)
                {
                    strMsg = "No existe el codigo ingresado.";
                    MostrarComentario(strMsg);
                    return;
                }

                int intIdMaterial, intIndex = 0;
                String strDesMaterial, strFob;

                intIdMaterial = Convert.ToInt32(grdMaterial.GetRowValues(intIndex, "ID_MATERIAL"));
                strDesMaterial = grdMaterial.GetRowValues(intIndex, "DES_MATERIAL").ToString();
                strFob = grdMaterial.GetRowValues(intIndex, "FOB").ToString();

                txtCMIdMaterial.Text = intIdMaterial.ToString();
                txtCMDesMaterial.Text = strDesMaterial;
                txtCMFob.Text = String.Format("{0:f}", Convert.ToDecimal(strFob));

                txtCMCodMaterial.Enabled = false;
                txtCMDesMaterial.Enabled = false;

                lista = new List<Object>();

                grdMaterial.DataSource = lista;
                grdMaterial.DataBind();

            }
            catch (RunException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "BuscarMaterialCM");
                MensajesError(ex.Message, ex, "BuscarMaterialCM");

            }
            catch (Exception ex) {

                GuardarExceptionLog("Error no controlado", ex, "BuscarMaterialCM");
                MensajesError("Error no controlado", ex, "BuscarMaterialCM");
            }
        }
    }
}